package com.huawei.zyb.taskManager.infrastructure.persistence.mapper;

import com.huawei.zyb.taskManager.infrastructure.persistence.po.DeveloperPO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 开发者数据访问映射器
 */
@Mapper
public interface DeveloperMapper {
    
    /**
     * 插入开发者
     */
    int insert(DeveloperPO developerPO);
    
    /**
     * 更新开发者
     */
    int update(DeveloperPO developerPO);
    
    /**
     * 根据ID查找开发者
     */
    DeveloperPO findById(@Param("id") String id);
    

    

    
    /**
     * 根据角色查找开发者列表
     */
    List<DeveloperPO> findByRole(@Param("role") String role);
    
    /**
     * 根据状态查找开发者列表
     */
    List<DeveloperPO> findByStatus(@Param("status") String status);
    
    /**
     * 查找所有开发者
     */
    List<DeveloperPO> findAll();
    
    /**
     * 根据姓名模糊查找开发者
     */
    List<DeveloperPO> findByNameLike(@Param("name") String name);
    
    /**
     * 查找可以分配任务的开发者
     */
    List<DeveloperPO> findAvailableForAssignment();
    
    /**
     * 查找管理角色的开发者
     */
    List<DeveloperPO> findManagementRoles();
    
    /**
     * 根据ID删除开发者
     */
    int deleteById(@Param("id") String id);
    
    /**
     * 检查开发者是否存在
     */
    boolean existsById(@Param("id") String id);
    
    
    
    /**
     * 检查开发者是否有未完成的任务
     */
    boolean hasIncompleteTasks(@Param("developerId") String developerId);
    
    /**
     * 统计开发者数量
     */
    int countByStatus(@Param("status") String status);
    
    
}